package com.xiaoshuidi.cloud.module.report.controller.finance.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;


@Setter
@Getter
public class ReportReceivableCheckRespVO implements Serializable {
    /**
     * 房间名称
     */
    @Schema(description = "房间名称")
    private String roomName;
    /**
     * 面积
     */
    @Schema(description = "面积")
    private Double space;
    /**
     * 承租人
     */
    @Schema(description = "承租人")
    private String customerName;
    /**
     * 承租人编号
     */
    @Schema(description = "承租人编号")
    private Long memberId;
    /**
     * 交易方式
     */
    @Schema(description = "交易方式")
    private String payMethod;

    /**
     * 交租开始时间
     */
    @Schema(description = "交租开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDate startTime;
    /**
     * 交租结束时间
     */
    @Schema(description = "交租结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDate endTime;
    /**
     * 到账时间
     */
    @Schema(description = "到账时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDateTime paymentDate;
    /**
     * 账单应收款日期
     */
    @Schema(description = "账单应收款日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDate deadlinePayTime;

    /**
     * 应收租金
     */
    @Schema(description = "应收租金")
    private BigDecimal receivableRent;
    /**
     * 已收租金
     */
    @Schema(description = "已收租金")
    private BigDecimal actualRent;
    /**
     * 预收租金
     */
    @Schema(description = "预收租金")
    private BigDecimal advanceRent;
    /**
     * 未收租金
     */
    @Schema(description = "未收租金")
    private BigDecimal uncollectedRent;
    /**
     * 本年累计应收租金（累计到筛选月份）
     */
    @Schema(description = "本年累计应收租金（累计到筛选月份）")
    private BigDecimal totalReceivableRent;
    /**
     * 本年累计已收租金（累计到筛选月份）
     */
    @Schema(description = "本年累计已收租金")
    private BigDecimal totalActualRent;
    /**
     * 本年累计预收租金（累计到筛选月份）
     */
    @Schema(description = "本年累计预收租金")
    private BigDecimal totalAdvanceRent;
    /**
     * 本年累计未收租金（累计到筛选月份）
     */
    @Schema(description = "本年累计未收租金")
    private BigDecimal totalUncollectedRent;
}
